package biz

import (
	"github.com/golang-jwt/jwt/v4"
	"time"
)

// GetJwtToken 生成一个带有指定有效载荷和有效期的 JSON Web Token (JWT)。
// 参数:
//   - secretKey: 用于签名 JWT 的密钥字符串。
//   - seconds: JWT 的有效期（从现在开始算起的秒数）。
//   - payload: 要嵌入到 JWT 中的有效载荷数据，通常是用户ID或其他身份信息。
//
// 返回值:
//   - string: 生成的 JWT 字符串。
//   - error: 如果生成过程中发生错误，则返回非nil的错误。
func GetJwtToken(secretKey string, seconds int64, payload any) (string, error) {
	//获取当前时间戳
	iat := time.Now().Unix()

	claims := make(jwt.MapClaims)
	claims["exp"] = iat + seconds
	claims["iat"] = iat
	claims["userId"] = payload
	token := jwt.New(jwt.SigningMethodHS256)
	token.Claims = claims
	return token.SignedString([]byte(secretKey))
}
